package com.qzdsoft.erpcloud.service.sale;

import java.util.List;

import com.qzdsoft.erpcloud.domain.sale.SaleQuotation;
import com.qzdsoft.erpcloud.vo.sale.SaleQuotationEditEn;
import com.qzdsoft.erpcloud.vo.sale.SaleQuotationQueryCriteriaViEn;
import com.qzdsoft.erpcloud.vo.sale.SaleQuotationViEn;
import com.qzdsoft.vo.LayTableResponse;
import com.qzdsoft.vo.Response;
import com.qzdsoft.vo.TypeInfo;

/**
 * 模块名：销售报价单
 * <p>详细描述：销售报价单服务层
 * @author DamingChen Sep 27, 2017
 * @see
 * @since 1.0
 */
public interface SaleQuotationService {
	
	
	/**
	 * 更加指定条件查询销售报价单
	 * @param info
	 * @return
	 */
	LayTableResponse<SaleQuotationViEn> findSaleQuotationsBy(SaleQuotationQueryCriteriaViEn saleQuotationQueryCriteriaViEn);

	/**
	 * 展示单个销售报价单
	 * @param id
	 * @return
	 */
	SaleQuotationViEn findSaleQuotationBy(Integer id);
	
	
	/**
	 * 修改销售报价单
	 * @param info
	 * @return
	 */
	Response<String> edit(SaleQuotationEditEn saleQuotationEditEn,Integer userId);
	
	/**
	 * 销售报价单审核
	 * @param id
	 * @return
	 */
	Response<SaleQuotationViEn> reivew(Integer userid,Integer id);
	
	/**
	 * 销售报价单弃审
	 * @param id
	 * @return
	 */
	Response<SaleQuotationViEn> cancelReview(Integer userid,Integer id);
	
	
	/**
	 * 销售报价单关闭
	 * @param id 销售报价单id
	 * @return
	 */
	Response<String> close(Integer id);
	
	/**
	 * 销售报价单删除
	 * @param id
	 * @return
	 */
	Response<String> remove(Integer id);

	/**
	 * 新增销售报价单
	 * @param info
	 * @return
	 */
    Response<String> add(SaleQuotationViEn saleQuotationViEn);
	
	
	/**
	 * 查询已审核的销售报价单
	 * @param record
	 * @return
	 */
	List<SaleQuotation> selectReviewOrderByCompanyId(SaleQuotation record);

	/**
	 * 销售报价单作为来源单据
	 * @param companyId
	 * @return
	 */
	List<TypeInfo> queryBillNo(Integer companyId);

}
